package main

import (
    "fmt"
//    "rand"
)

type Suit struct {
    short_name string
    long_name string
}

type FaceValue struct {
    low uint8
    high uint8
    short_name string
    long_name string
}

type Card struct {
    Value FaceValue
    Suit Suit
}

type Hand struct {
    card1, card2, card3, card4, card5 Card   
}

func main() {

    var suits [4]Suit
    suits[0] = Suit { "c", "clubs" }
    suits[1] = Suit { "d", "diamonds" }
    suits[2] = Suit { "h", "hearts" }
    suits[3] = Suit { "s", "spades" }

    var faces [13]FaceValue;
    faces[0] = FaceValue { 2, 2, "2", "Deuce" }
    faces[1] = FaceValue { 3, 3, "3", "Trey" }
    faces[2] = FaceValue { 4, 4, "4", "Four" }
    faces[3] = FaceValue { 5, 5, "5", "Five" }
    faces[4] = FaceValue { 6, 6, "6", "Six" }
    faces[5] = FaceValue { 7, 7, "7", "Seven" }
    faces[6] = FaceValue { 8, 8, "8", "Eight" }
    faces[7] = FaceValue { 9, 9, "9", "Nine" }
    faces[8] = FaceValue { 10, 10, "T", "Ten" }
    faces[9] = FaceValue { 11, 11, "J", "Jack" }
    faces[10] = FaceValue { 12, 12, "Q", "Queen" }
    faces[11] = FaceValue { 13, 13, "K", "King" }
    faces[12] = FaceValue { 1, 14, "A", "Ace" }

    var deck [52]Card
    var i = 0
    for _, suit := range suits {
        for _, val := range faces {
            deck[i] = Card { val, suit }
            i++
        }
    }

    fmt.Println(1)
    /*
    for card1_idx, card1 := range deck {
        
    }
    */
    
    var hand_count uint32 = 0;
    var hands [2598960]Hand;
    
    for card1_idx := 51; card1_idx >= 4; card1_idx-- {
		for card2_idx := card1_idx - 1; card2_idx >= 3; card2_idx-- {
            for card3_idx := card2_idx - 1; card3_idx >= 2; card3_idx-- {
                for card4_idx := card3_idx - 1; card4_idx >= 1; card4_idx-- {
                    for card5_idx := card4_idx - 1; card5_idx >= 0; card5_idx-- {
                        hands[hand_count] = Hand { deck[card1_idx], deck[card2_idx], deck[card3_idx], deck[card4_idx], deck[card5_idx] }                          
                        hand_count++;
                    }
                }
            }
		}
    }
    
    fmt.Println(hand_count)
}
